//
//  WebViewController.m
//  Cat
//
//  Created by lushitong on 2018/12/21.
//  Copyright © 2018年 lushitong. All rights reserved.
//

#import "WebViewController.h"
#import <WebKit/WebKit.h>

@interface WebViewController ()

@property (nonatomic, strong) WKWebView *webView;
@property (nonatomic, strong) UIProgressView *progressView;

@end

@implementation WebViewController

- (void)viewDidLoad {
    [super viewDidLoad];
	[self loadAllSubViews];
	[self startLoad];
	[self.webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:nil];
	[self.webView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:nil];
}

- (void)loadAllSubViews {
	[self.view addSubview:self.progressView];
	[self.view addSubview:self.webView];
	
	[self.progressView mas_makeConstraints:^(MASConstraintMaker *make) {
		make.left.and.right.equalTo(self.view);
		make.top.equalTo(self.topTitleView.mas_bottom);
		make.height.equalTo(@(kQKFitModuleDecimal(1.0)));
	}];
	
	[self.webView mas_makeConstraints:^(MASConstraintMaker *make) {
		make.left.and.right.and.bottom.equalTo(self.view);
		make.top.equalTo(self.progressView.mas_top);
	}];
}

- (void)startLoad {
	NSString *urlString = self.URL;
	NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]];
	request.timeoutInterval = 15.0f;
	[self.webView loadRequest:request];
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
	if ([keyPath isEqualToString:@"estimatedProgress"]) {
		self.progressView.progress = self.webView.estimatedProgress;
		if (self.progressView.progress == 1) {
			/*
			 *添加一个简单的动画，将progressView的Height变为1.4倍，在开始加载网页的代理中会恢复为1.5倍
			 *动画时长0.25s，延时0.3s后开始动画
			 *动画结束后将progressView隐藏
			 */
			__weak typeof (self)weakSelf = self;
			[UIView animateWithDuration:0.25f delay:0.3f options:UIViewAnimationOptionCurveEaseOut animations:^{
				weakSelf.progressView.transform = CGAffineTransformMakeScale(1.0f, 1.4f);
			} completion:^(BOOL finished) {
				weakSelf.progressView.hidden = YES;
				
			}];
		}
	} else if ([keyPath isEqualToString:@"title"]){
		[self.topTitleView setDetailDic:@{Nav_Title:self.webView.title}.mutableCopy];
	} else{
		[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
	}
}

- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation {
	NSLog(@"开始加载网页");
	//开始加载网页时展示出progressView
	self.progressView.hidden = NO;
	//开始加载网页的时候将progressView的Height恢复为1.5倍
	self.progressView.transform = CGAffineTransformMakeScale(1.0f, 1.5f);
	//防止progressView被网页挡住
	[self.view bringSubviewToFront:self.progressView];
}

//加载完成
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
	NSLog(@"加载完成");
	//加载完成后隐藏progressView
	self.progressView.hidden = YES;
}

//加载失败
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error {
	NSLog(@"加载失败");
	//加载失败同样需要隐藏progressView
	self.progressView.hidden = YES;
}

- (void)dealloc {
	[self.webView removeObserver:self forKeyPath:@"estimatedProgress"];
	[self.webView removeObserver:self forKeyPath:@"title"];
}

#pragma mark----- lazy init -----
- (WKWebView *)webView {
	if (!_webView) {
		_webView = [[WKWebView alloc] init];
	}
	return _webView;
}

- (UIProgressView *)progressView {
	if (!_progressView) {
		_progressView = [[UIProgressView alloc] init];
		_progressView.backgroundColor = [UIColor yellowColor];
		//设置进度条的高度，下面这句代码表示进度条的宽度变为原来的1倍，高度变为原来的1.5倍.
		_progressView.transform = CGAffineTransformMakeScale(1.0f, 1.5f);
	}
	return _progressView;
}

@end
